package com.huqing.icu.rentreport.model;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.huqing.icu.enums.DeleteStatusEnum;
import com.huqing.icu.rentreport.enums.ReportApproveStatusEnum;
import com.huqing.icu.rentreport.enums.ReportRecordBusTypeEnum;
import com.huqing.icu.rentreport.enums.ReportRecordSourceType;
import lombok.Data;

import java.io.Serializable;
import java.sql.Timestamp;

/**
 * 举报记录表
 *
 * @author huqing
 * @date 2024-11-18 22:32
 */
@TableName(value = "report_record")
@Data
public class ReportRecord implements Serializable {

    private Long id;

    /**
     * 业务id，来源于APP的业务，比如房源id、帖子id
     */
    private Long busId;

    /**
     * 业务类型 10-房源，20-帖子，30-评论
     *
     * @see ReportRecordBusTypeEnum
     */
    private Integer busType;

    /**
     * 举报来源id，比如评论id
     */
    private Long sourceId;

    /**
     * 举报来源类型，1-业务本身 2-评论
     *
     * @see ReportRecordSourceType
     */
    private Integer sourceType;

    /**
     * 业务的标题（这里之所以要记录，是避免举报后来源被删除后没法回溯，比如作品什么的，）
     */
    private String busTitle;

    /**
     * 举报人id
     */
    private Long reporterId;

    /**
     * 被举报人id
     */
    private Long toId;

    /**
     * 举报类型ID
     */
    private Long reportTypeId;

    /**
     * 举报类型名称
     */
    private String reportTypeName;

    /**
     * 举报补充
     */
    private String supplement;

    /**
     * 来源内容（评论内容）
     */
    private String sourceContent;

    /**
     * 来源图片（评论图片）
     */
    private String sourceImages;

    /**
     * 证据图
     */
    private String evidenceUrls;

    /**
     * 审核状态 1-待审核 2-审核通过 3-审核不通过
     *
     * @see ReportApproveStatusEnum
     */
    private Integer approveStatus;

    /**
     * 操作人ID
     */
    private Long operatorId;

    /**
     * 审核不通过原因
     */
    private String reason;

    /**
     * 审核时间
     */
    private Timestamp approveTime;

    /**
     * 举报来源的业务时间（如评论时间）
     */
    private Timestamp sourceTime;

    /**
     * 是否已删除 0-否 1-是
     *
     * @see DeleteStatusEnum
     */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建时间-举报提交时间
     */
    private Timestamp createTime;

    /**
     * 修改时间
     */
    private Timestamp modifyTime;
}
